// Header that defines the Game Board for Battleship
// It will keep records of each player's board and fleet
// and give methods to affect the game board

#ifndef GameBoard_
#define GameBoard_

#include <iostream>
#include "Coordinate.h"
#include "Ship.h"
#include "Player.h"
#include <list>

using namespace std;

//template<class T>
class GameBoard
{
private:
	Player *player1;
	Player *player2;
	std::list<Coordinate> player1Board;  // a linked list of all previous shot locations in order to reduce time traversing a matrix/array
	std::list<Coordinate> player2Board;
	std::list<Ship> player1Fleet;		// a linked list of all this player's ships
	std::list<Ship> player2Fleet;
	int dimensionX;				// size of the board
	int dimensionY;
	
public:
	GameBoard();
	void gameStart();
	void getBoardStatus();
	int makeShot(int x, int y, int playerID);
	int gameOverStatus();
	int getSizeX() { return dimensionX; }
	int getSizeY() { return dimensionY; }
	
};

#endif
